<?php
/**
 * Created by JetBrains PhpStorm.
 * User: Андрей
 * Date: 12.05.12
 * Time: 21:22
 * To change this template use File | Settings | File Templates.
 */

    /*
     * Контроллер заметок
     */

    class NoteController extends ControllerAbstract
    {
        /*
         *  По умолчанию
         */
        public  function index()
        {
            header("Location: http://myblog.local/users/");
            return ;
        }

        /*
         *  Добавление заметки
         */
        public  function addNote()
        {
            // пользователь
            $user = UserModelMapper::getCurrentUser();

            // неавторизован
            if (! $user->isAuthorized() )
            {
                header("Location: http://myblog.local/");
                return ;
            }

            // щелчок по кнопочке добавить заметку
            if (! isset($_POST['addNote']) )
            {
                header("Location: http://myblog.local/users/" . $user->getLogin());
                return ;
            }

            $nMapper = new NoteModelMapper();
            $note = new NoteModel($user->getId(), null, $_POST['noteText'], date("H:i"), date("j F"));
            if ($_POST['youtube'] != '')
            {
                //$note->setYoutube(urlencode($_POST['youtube']));
                $note->setYoutube(htmlspecialchars_decode($_POST['youtube']));
            }
            
            $nMapper->saveNote($note);
            
            header("Location: http://myblog.local/users/" . $user->getLogin());
        }

        /*
         * Редактирование заметки
         */

        public  function editNote($noteId)
        {
             // вытащить параметр
            if ( is_array($noteId) )
            {
                $noteId = array_shift($noteId);
            }
            
            $user = UserModelMapper::getCurrentUser();

            if (! $user->isAuthorized() )
            {
                header("Location: http://myblog.local/auth/");
                return ;
            }

            // кнопочка редактировать 
            if (! isset($_POST['editNote']) )
            {
                header("Location: http://myblog.local/users/");
                return ;
            }

            // параметр id заметки должен быть цифрой
            if (! is_numeric($noteId) )
            {
                header("Location: http://myblog.local/users/");
                return ;
            }
            
            $nMapper = new NoteModelMapper();
            // если есть такая заметка
            if ($note = $nMapper->fetchNoteById($noteId))
            {
                // редактировать только свою заметку можно
                if ( $user->getId() == $note->getUserId() )
                {
                    // отредактировать
                    $note->setText($_POST['noteText']);
                    $nMapper->saveNote($note);
                }
            }

            header("Location: http://myblog.local/users/");
        }


        /*
         * Удаление заметки
         */

        public  function removeNote($noteId)
        {
            // вытащить параметр
            if ( is_array($noteId) )
            {
                $noteId = array_shift($noteId);
            }

            $user = UserModelMapper::getCurrentUser();

            if (! $user->isAuthorized() )
            {
                header("Location: http://myblog.local/auth/");
                return ;
            }

            // параметр id заметки должен быть цифрой
            if (! is_numeric($noteId) )
            {
                header("Location: http://myblog.local/users/");
                return ;
            }

            $nMapper = new NoteModelMapper();
            // если есть такая заметка
            if ($note = $nMapper->fetchNoteById($noteId))
            {
                // Удалять только свою заметку можно
                if ( $user->getId() == $note->getUserId() )
                {
                    $nMapper->removeNote($note);
                }
            }

            header("Location: http://myblog.local/users/");
            return ;
        }

    }
